基礎設施即代碼 雲服務器管理

基礎設施即代碼 雲服務器管理

作者: [美]基夫·莫裡斯
出版社: 人民郵電
出版在: 2018-09-01
ISBN-13: 9787115490636
ISBN-10: 7115490635
裝訂格式: 平裝
總頁數: 240 頁





內容描述


本書旨在解釋如何利用“雲時代”基礎設施即代碼的方法來管理IT基礎設施。
主要內容包括:組織在採用新一代基礎設施技術時經常掉進的陷阱以及避免這些陷阱的核心原則和基礎設施即代碼的關鍵實踐;
動態基礎設施平臺的性能和服務模型;提供、確認核心基礎設施資源的工具;規定服務器、構建服務器模板和更新運行服務器的實踐和模型。


目錄大綱


第一部分基礎
第1章挑戰與原則3 
1.1為什麼採用基礎設施即代碼3 
1.2什麼是基礎設施即代碼4 
1.3動態基礎設施的挑戰5 
1.3.1服務器蔓延5 
1.3.2配置漂移6 
1.3.3雪花服務器6 
1.3.4脆弱的基礎設施7 
1.3.5自動化恐懼症7 
1.3.6侵蝕8 
1.4基礎設施即代碼的原則8 
1.4.1系統能夠輕鬆複製8 
1.4.2系統是用完可扔的9 
1.4. 3系統是一致的10 
1.4.4過程是可重複的10 
1.4.5設計經常變更10 
1.5實踐11 
1.5.1使用定義文件11 
1.5.2自文檔化的系統和流程11 
1.5.3一切版本化12 
1.5.4持續測試系統和流程13 
1.5.5小的變更,而不是批量變更13 
1.5.6讓服務持續可用13 
1.6反脆弱性:超越“穩健性” 14 
1.7結語15 
1.8下一步15 
第2章動態基礎設施平台16 
2.1什麼是動態基礎設施平台16
2.2對動態基礎設施平台的要求17 
2.2.1可編程17 
2.2.2按需獲取19 
2.2.3自服務19 
2.3平台提供的基礎設施資源19 
2.3.1計算資源20 
2.3.2存儲資源20 
2.3. 3網絡資源22 
2.4動態基礎設施平台的類型23 
2.4.1公有IaaS雲23 
2.4.2社區IaaS雲23 
2.4.3私有IaaS雲23 
2.4.4反模式:手搖雲24 
2.4.5混合雲服務24 
2.4.6裸機雲24 
2.5如何選擇動態基礎設施平台25 
2.5.1公有還是私有25 
2.5.2雲的可移植性27 
2.6與雲和虛擬化的“機械通感” 29 
2.7結語30 
第3章基礎設施定義工具31 
3.1選擇基礎設施即代碼的工具31 
3.1.1需求:腳本接口32 
3.1.2需求:無人值守的命令行工具32 
3.1.3需求:支持無人值守的執行33 
3.1.4需求:外部化配置34 
3.2配置定義文件36 
3.3使用基礎設施定義工具37 
3.3.1用過程化腳本置備基礎設施38
3.3.2聲明式定義基礎設施40 
3.3.3使用基礎設施定義工具41 
3.3.4配置服務器41 
3.4配置註冊表42 
3.4.1輕量級配置註冊表42 
3.4.2配置註冊表是CMDB嗎43 
3.4 .3 CMDB的審計與修復反模式44 
3.4.4 CMDB的基礎設施即代碼方式44 
3.5結語44 
第4章服務器配置工具45 
4.1自動化服務器管理的目標45 
4.2具有不同的服務器管理功能的工具46 
4.2. 1創建服務器的工具46 
4.2.2配置服務器的工具47 
4.2.3打包服務器模板的工具48 
4.2.4在服務器上運行命令的工具49 
4.2.5從中央註冊中心獲取配置50 
4.3服務器變更管理模型51 
4.3.1臨時變更管理51 
4.3.2配置同步51 
4.3.3不可變的基礎設施51 
4.3.4容器化服務52 
4.4容器52 
4.4.1以容器方式和非容器方式管理Ruby應用程序53 
4.4.2容器是虛擬機嗎54 
4.4.3使用容器而不是虛擬機55 
4.4.4運行容器56 
4.4.5安全和容器56
4.5結語58 
第5基礎服務概述59 
5.1基礎設施服務和工具的考慮59 
5.1.1支持外部配置的工具優先60 
5.1.2假定基礎設施是動態的工具優先61 
5.1.3具有云兼容許可的產品優先61 
5.1.4支持松耦合的產品優先62 
5.2團隊之間共享服務62 
5.3監控:告警、指標和日誌63 
5.3.1告警:出現問題時告訴我64 
5.3.2指標:收集和分析數據65 
5.3. 3日誌聚合和分析65 
5.4發現服務66 
5.4.1服務器端的服務發現模式67 
5.4.2客戶端的服務發現模式67 
5.5分佈式進程管理67 
5.5.1使用服務器角色編排進程67 
5.5.2使用容器編排進程67 
5.5.3調度短期任務68 
5.5.4容器編排工具68 
5.6軟件部署68 
5.6.1部署流水線軟件68 
5.6.2打包軟件69 
5.7結語70 
第二部分模式
第6章置備服務器的模式73 
6.1服務器置備74 
6.1.1服務器的生命週期74 
6.1.2服務器都承載了什麼77
6.1.3服務器上東西的類型77 
6.1.4服務器角色79 
6.2創建服務器的模式80 
6.2.1反模式:手動製作服務器80 
6.2.2實踐:將服務器創建參數放在腳本中81 
6.2.3反模式:熱克隆服務器82 
6.2.4模式:服務器模板82 
6.2.5反模式:雪花工廠82 
6.3引導新服務器的模式83 
6.3.1推送引導83 
6.3.2拉取引導84 
6.3.3實踐:對每個新服務器實例進行冒煙測試84 
6.4結語85 
第7章管理服務器模板的模式86 
7.1供應模板:不能讓別人來做嗎86 
7.2使用模板置備服務器87 
7.2.1創建時置備服務器87 
7.2.2在模板中置備88 
7.2.3平衡模板和創建之間的置備工作88 
7.3構建服務器模板的流程89 
7.4原始鏡像90 
7.4.1反模式:熱複製服務器模板90 
7.4.2基於操作系統安裝鏡像烘焙模板91 
7.4 .3基於供應鏡像烘焙模板91 
7.4.4基於Unikernel構建模板92 
7.4.5在不啟動服務器的情況下自定義服務器模板92 
7.5更新服務器模板92
7.5.1重新烘烤模板93 
7.5.2烘焙新模板93 
7.5.3版本控制服務器模板93 
7.6構建基於角色的模板95 
7.6.1模式:分層模板95 
7.6.2共享模板的基礎腳本96 
7.7自動化服務器模板管理96 
7.7.1在烘焙前自定義服務器96 
7.7.2實踐:自動測試服務器模板97 
7.8結語97 
第8章服務器更新與變更模式98 
8.1服務器變更管理模型99 
8.1.1臨時性變更管理99 
8.1.2持續配置同步99 
8.1.3不可變服務器99 
8.1.4容器化服務器100 
8.2通用模式和實踐100 
8.2.1實踐:最小化服務器模板101 
8.2.2實踐:當服務器模板變更時更換服務器101 
8.2.3模式:鳳凰服務器101 
8.3持續部署的模式與實踐102 
8.3.1模式:無主服務器的配置管理102 
8.3.2實踐:應用Cron 103 
8.3.3持續同步流104 
8.3.4未配置領域104 
8.4不可變服務器的模式與實踐106 
8.4.1服務器鏡像作為製品106 
8.4.2使用不可變服務器簡化確認管理工具106
8.4.3不可變服務器流程107 
8.4.4使用不可變服務器引導配置108 
8.4.5事務性服務器更新109 
8.5管理配置定義的實踐109 
8.5.1實踐:保持配置定義最小化109 
8.5.2組織定義110 
8.5.3實踐:使用測試驅動開發來驅動良好的設計110 
8.6結語110 
第9章定義基礎設施的模式111 
9.1環境112 
9.1.1反模式:手動製作的基礎設施112 
9.1.2定義基礎設施棧即代碼112 
9.1.3反模式:每個環境單獨的定義文件114 
9.1.4模式:可重用的定義文件114 
9.1.5實踐:測試並推進棧定義115 
9.1.6自服務的環境116 
9.2組織基礎設施116 
9.2.1反模式:單體棧116 
9.2.2遷移基礎設施時避免“直接遷移” 118 
9.2.3將應用程序環境分到不同的棧中118 
9.2.4管理棧之間的配置參數119 
9.2 .5共享基礎設施元素120 
9.2.6實踐:應用程序代碼和基礎設施代碼一起管理122 
9.2.7共享定義的方法123 
9.2.8實踐:基礎設施設計要與變更範圍 配124 
9.2.9示例:微服務的基礎設施設計125
9.3運行定義工具128 
9.4結語128 
第三部分實踐
第10章基礎設施的軟件工程實踐131 
10.1系統質量132 
10.1.1低質量的系統很難變更132 
10.1.2高質量的系統能更容易、更安全地變更132 
10.1.3基於代碼的基礎設施質量133 
10.1.4快速反饋133 
10.2基礎設施管理的版本控制系統133 
10.3持續集成134 
10.3.1持續測試分支不是持續集成134 
10.3.2誰破壞了構建136 
10.3.3忽略失敗的測試137 
10.3.4針對基礎設施的持續集成137 
10.4持續交付137 
10.4.1集成階段的問題137 
10.4.2部署流水線和變更流水線138 
10.4.3持續交付不是持續部署139 
10.5代碼質量140 
10.5.1整潔代碼140 
10.5.2實踐:管理技術債務140 
10.6管理重大的基礎設施變更141 
10.7結語142 
第11章測試基礎設施變更143 
11.1敏捷測試方法144 
11.1.1自動化測試提供快速反饋144 
11.1.2有機地構建一個測試套件145
11.2構建測試套件:測試金字塔145 
11.2.1避免失衡的測試套件146 
11.2.2實踐:盡可能在最低層級進行測試147 
11.2.3實踐:僅實現需要的層級148 
11.2.4實踐:經常刪減測試套件148 
11.2.5實踐:持續評審測試的有效性148 
11.3實現均衡的測試套件149 
11.3.1低層級測試150 
11.3.2中間層級測試151 
11.3.3高層級測試154 
11.3.4測試運維質量155 
11.4管理測試代碼156 
11.4.1實踐:將測試代碼與所測代碼放在一起156 
11.4.2反模式:反射測試156 
11.4.3隔離組件進行測試的技巧157 
11.4.4重構組件以便隔離158 
11.4 .5管理外部依賴158 
11.4.6測試設置159 
11.5測試的角色和工作流161 
11.5.1原則:人們應該為所構建的東西編寫測試161 
11.5.2編寫測試的習慣162 
11.5.3原則:每個人都應該能夠使用測試工具162 
11.5.4質量分析師的價值162 
11.5.5測試驅動開發163 
11.6結語164 
第12章基礎設施的變更管理流水線165
12.1變更管理流水線的好處166 
12.2設計流水線的準則166 
12.2.1確保每個階段的一致性167 
12.2.2對於每個變更都立即得到反饋167 
12.2.3在手動階段之前運行自動階段168 
12.2.4儘早獲得類生產環境168 
12.3基本流水線設計169 
12.3.1本地開發階段169 
12.3.2構建階段169 
12.3.3發布配置製品170 
12.3.4自動化測試階段171 
12.3.5手動驗證階段172 
12.3.6上線173 
12.3.7流水線的節奏173 
12.4使用流水線的實踐174 
12.4.1實踐:證明每個變更都對生產準備就緒174 
12.4.2實踐:每個變更都始於流水線起點175 
12.4.3實踐:出現錯誤時停止流水線175 
12.5擴展流水線到更複雜的系統175 
12.5.1模式:扇入型流水線176 
12.5.2實踐:保持較短的流水線179 
12.5.3實踐:解耦流水線179 
12.5.4集成模型180 
12.6處理組件之間依賴的技巧181 
12.6.1模式:庫依賴181 
12.6.2模式:自置備的服務實例183
12.6.3提供預發布的庫構建183 
12.6.4為消費者提供服務的測試實例184 
12.6.5將服務的測試實例用作消費者185 
12.7管理組件間接口的實踐186 
12.7.1實踐:保證接口的向後兼容性186 
12.7.2實踐:從發布解耦部署186 
12.7.3實踐:使用版本相容187 
12.7.4實踐:提供測試替身187 
12.7.5實踐:用契約測試來測試提供者188 
12.7 .6實踐:用參考消費者來測試188 
12.7.7實踐:提供者接口的冒煙測試188 
12.7.8實踐:運行消費者驅動契約測試188 
12.8結語189 
第13章基礎設施團隊的工作流190 
13.1任何可以自動化的都要自動化190 
13.1.1手動變更191 
13.1.2臨時的自動化191 
13.1.3自主的自動化192 
13.1.4自主的自動化工作流193 
13.2使用本地沙箱194 
13.2.1使用本地虛擬化做沙箱194 
13.2.2具有本地測試的工作流示例196 
13.2.3使用虛擬化平台做沙箱197 
13.3代碼庫組織模式197 
13.3.1反模式:基於分支的代碼庫1 98
13.3.2模式:每個組件一個主幹199 
13.3.3模式:單一主幹199 
13.4工作流的效率199 
13.4.1加快變更199 
13.4.2代碼評審200 
13.4.3將治理融入工作流200 
13.5結語202 
第14章動態基礎設施的連續性203 
14.1服務連續性204 
14.1.1真實可用性204 
14.1.2用動態服務器池做恢復205 
14.1.3為動態基礎設施設計軟件206 
14.1.4為連續性劃分系統208 
14.2零停機變更208 
14.2.1模式:藍綠替換209 
14.2.2模式:鳳凰替換209 
14.2.3實踐:縮小替換的範圍210 
14.2.4模式:金絲雀替換211 
14.2.5為零停機替換路由流量212 
14.2.6有數據的零停機變更213 
14.3數據連續性214 
14.3.1冗餘地複制數據214 
14.3.2重新生成數據215 
14.3.3委託數據持久化215 
14.3.4備份到持久存儲215 
14.4災難恢復216 
14.4.1持續的災難恢復217 
14.4.2災備計劃:為災難做計劃218
14.4.3實踐:優先重建而不是冷備份218 
14.4.4通過流水線持續監控219 
14.5安全220 
14.5.1自動掩蓋危害220 
14.5.2以可靠的更新作為防護221 
14.5.3包的來源221 
14.5.4自動加固222 
14.5.5流水線中安全驗證的自動化223 
14.5.6變更流水線的漏洞223 
14.5.7管理雲賬號的安全風險224 
14.6結語225 
第15章基礎設施即代碼的組織要求226 
15.1演進式架構226 
15.1.1在實戰中學習228 
15.1.2從先驅者流水線開始228 
15.2度量有效性229 
15.2.1首先對期望的結果達成一致229 
15.2.2選擇有助於團隊的度量指標230 
15.2.3跟踪和改善週期時間230 
15.2.4使用看板可視化工作232 
15.2.5回顧會議及事後分析233 
15.3組織授權用戶233 
15.3.1劃分功能模型的陷阱233 
15.3.2採取自服務模型235 
15.3.3承擔全部責任:誰構建,誰運行235 
15.3.4組織跨職能團隊236 
15.4持續變更管理的治理237
15.4.1提供穩固的構建單元237 
15.4.2在流水線中證明運維就緒238 
15.4.3共享運維質量的所有權238 
15.4.4審查和審計自動化流程238 
15.4.5優化發現和修復問題的時間239 
15.5結語:永無止境239 
關於作者240 
關於封面240


作者介紹


基夫·莫里斯(Kief Morris)是ThoughtWorks歐洲區持續交付和DevOps帶頭人,致力於幫助客戶尋找建立和管理基礎設施運維工作的更有效方法;擁有近20年設計、構建和運行自動化IT服務器基礎設施的經驗。




相關書籍

Learn Kubernetes in a Month of Lunches

作者 Stoneman Elton

2018-09-01

Genomics in the Cloud: GATK, Spark, and Docker

作者 Brian D. O'Connor Geraldine van der Auwera

2018-09-01

AWS Certified Solutions Architect Study Guide: Associate SAA-C01 Exam, 2nd Edition

作者 Ben Piper David Clinton

2018-09-01